Skip to content

chore(deps): update dependency effect to v4.0.6 - #533

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/effect-4.x
Closed

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/effect-4.x

Conversation

@renovate

@renovate renovate Bot commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
effect (source) 4.0.5 → 4.0.6 age confidence

Release Notes

Effect-TS/effect (effect)

v4.0.6

Compare Source

Patch Changes
  • #​9674 ce13a48 Thanks @​effect-bot! - Allow Response.AllParts, Response.Part and Response.StreamPart to be called without a toolkit, decoding tool call and tool result parts for any tool name with unknown parameters and results.

  • #​9696 f3bbbb4 Thanks @​gcanti! - Fix Array.unionWith calling custom equivalence callbacks with values from the wrong input or in the wrong order.

  • #​9511 5547315 Thanks @​sledorze! - Speed up field copying in Data.Class, Data.Error, Request.Class and Persistable constructors.

  • #​9743 6093cfb Thanks @​effect-bot! - Fix AsyncResult equality treating unrelated Equal values with a matching tag and hash as equal.

  • #​9607 30319d5 Thanks @​effect-bot! - Fix Effect atoms dropping the latest exposed success when an asynchronous run fails, so an initialValue or a success published with get.setSelf remains available as the failure's previous success.

  • #​9313 74a7596 Thanks @​effect-bot! - Preserve Reactivity and global layers when replacing an atom runtime layer through registry initial values, so injected test layers retain shared invalidation and global services.

  • #​9190 bfb32a3 Thanks @​danieljvdm! - Log Atom scope finalizer failures at References.UnhandledLogLevel when an atom is disposed, using the atom runtime's logger. Interruption-only cleanup is not logged.

  • #​9522 f8bf7f4 Thanks @​tim-smart! - Add a skipInitialRun option to Atom.serializable and Atom.initialValue. A seeded effect or stream atom then keeps its hydrated or initial value instead of running on mount, until it is refreshed or a dependency changes. Factory get(...) calls and withReactivity keys are still tracked; dependencies read inside the effect are tracked from its first real run.

  • #​9718 7f3d3df Thanks @​fubhy! - Add Base64Url.encodePadded and a padding option to SchemaGetter.encodeBase64Url for consumers that require padded URL-safe Base64.

  • #​9698 db1046d Thanks @​effect-bot! - Encode HttpClientRequest.basicAuth credentials as UTF-8 before base64 encoding, so non-ASCII usernames and passwords no longer throw or get mangled.

  • #​9326 3c4f88a Thanks @​effect-bot! - Block imports of nested internal modules in the development and published package exports. These implementation details are not public APIs; public entry points remain available.

  • #​9441 916e709 Thanks @​fubhy! - Add the unstable Bytes module with concat, Equivalence, and Order for Uint8Array values. Stream.mkUint8Array now returns Uint8Array<ArrayBuffer>. Browser HTTP clients collect streamed request bodies without repeatedly copying accumulated bytes.

  • #​9470 916f843 Thanks @​tim-smart! - Reduce EventLog remote replay overhead by reusing decoded conflict payloads within each batch.

  • #​9617 66ec757 Thanks @​Marve10s! - Fix Effect.cachedInvalidateWithTTL caching a stale result when invalidated while the effect is running.

  • #​9499 daac06f Thanks @​schutzelaars! - Fix Effect.callback retaining completed suspension state, such as values received by Deferred.await or PubSub.take, until the next full GC.

  • #​9727 c2552ec Thanks @​Marve10s! - Fix Cause.pretty, Cause.prettyErrors, loggers and runMain overflowing the stack when an error's cause chain is cyclic.

  • #​9540 b02c1cd Thanks @​Marve10s! - Preserve falsy nested error causes (0, false, "", null) in Cause.prettyErrors and Cause.pretty.

  • #​9418 1855f1d Thanks @​jpowersdev! - Fix Channel.fromTransformStream so an upstream failure is reported when a read is pending, instead of the error raised by aborting the transform stream.

  • #​9602 683ed2c Thanks @​effect-bot! - Preserve Prompt.FilePart byte and URL data when chat history is exported or persisted as JSON. Encoding now produces tagged { _tag: "Uint8Array", base64 } and { _tag: "URL", href } objects that decode back to their original types, and Chat.Persistence reports undecodable stored history as a PersistenceError instead of a defect.

  • #​9238 ac68940 Thanks @​effect-bot! - Fix child-process cleanup without forceKillAfter to give remaining process-group members up to one second to exit after the leader exits. Clarify that waiting for the leader has no time limit and never escalates to SIGKILL when forceKillAfter is omitted.

  • #​9611 22a8401 Thanks @​itisrmk! - Fix Chunk.get and Chunk.getUnsafe throwing on in-range fractional indexes of one-element chunks, and treat NaN and infinite indexes as out of bounds.

  • #​9287 c53c194 Thanks @​devangpratap! - Fix the CLI lexer treating a short option cluster with an inline value, such as -vn=3, as one unknown flag instead of -v -n=3. A single dash followed by a multi-character name, such as -num=3, is now also split into separate flags; use --num=3 instead.

  • #​9655 ca6d1cc Thanks @​effect-bot! - Add Command.validate and CliError.ValidationError to the unstable CLI. validate checks the parsed input before the handler runs, for rules such as mutually exclusive flags. A failure is shown with the command help, like any parse error.

  • #​9650 47940c5 Thanks @​effect-bot! - Add Flag.withNegation and Flag.withoutNegation (with Param counterparts) to rename or remove the --no-<name> form of boolean flags in parsing and shell completions.

  • #​9285 e8b24ef Thanks @​okarin1511! - Fix the CLI treating --=value as a flag with an empty name. The argument is now passed through unchanged as a plain value, so it no longer fails with Unrecognized flag: --.

  • #​9666 2e8aae0 Thanks @​effect-bot! - Allow Command.withExamples to take a function that receives { commandPath }, so help examples match wherever a command is mounted.

  • #​8350 ad7497b Thanks @​ArjunCodess! - Add a TerminalCapabilities reference and layer to effect/cli; built-in Command help, version, and error output now follows it, so FORCE_COLOR enables color off a TTY and TERM=dumb disables it.

  • #​9248 7f504a3 Thanks @​bezff! - Fix the ClickHouse migrator creating its ledger with SQLite syntax and wrapping the run in BEGIN TRANSACTION.

  • #​9395 99e365d Thanks @​effect-bot! - Prevent Effect.forkIn and Effect.forkScoped from running work in an already-closed scope, even when startImmediately or uninterruptible is enabled. They now return an interrupted fiber without executing the supplied effect.

  • #​9407 954067d Thanks @​effect-bot! - Log and retry failures when scheduling the initial ClusterCron run so transient failures no longer leave the cron stopped.

  • #​9677 3e1a035 Thanks @​effect-bot! - Fix ClusterCron with calculateNextRunFromPrevious: true not resuming after its pending run was lost.

    In this mode every run is now processed by a single executor entity per cron job, so a restart no longer starts a second chain: runs never overlap and missed runs are caught up in order. Pending runs scheduled by earlier releases join the executor's chain. As a result, Entity.CurrentAddress inside execute no longer identifies the scheduled time; use the new ClusterCron.CurrentScheduledTime service instead, which is available in both modes.

    Failed runs are still retried until they succeed or are older than skipIfOlderThan, but in this mode a failing run now blocks later runs while it is retried, instead of later runs executing alongside it.

  • #​9577 41a1fe7 Thanks @​tim-smart! - ClusterMetrics.entities now reads the active entity count when metrics are snapshotted, instead of being updated by a loop once a second. The series is recorded in the MetricRegistry of the entity manager's context and removed when the entity manager shuts down.

  • #​9475 bcb3a86 Thanks @​effect-bot! - Warn when a forced cluster shard release remains pending beyond shardLockExpiration, including the affected shards and pending entity types and singletons. Release failures now emit rate-limited warnings while preserving the requirement that teardown and lock release finish before reacquisition.

  • #​9336 739d3d1 Thanks @​effect-bot! - Answer fresh, locally owned persisted cluster requests from a reply handler registered before the request is saved, instead of reading every local reply back from storage or polling for it. Duplicates and streams still read their replies from storage, and a dropped reply handler now falls back to storage immediately instead of waiting for the next poll. MessageStorage.registerReplyHandler must register its handler as soon as the effect starts.

  • #​9732 ed4da35 Thanks @​effect-bot! - Read persisted cluster messages from storage as soon as their entity type registers, instead of waiting for the next entityMessagePollInterval.

  • #​9716 3d84e19 Thanks @​tim-smart! - Fix cluster shard releases waiting out entityTerminationTimeout when the shard moves while an entity is waiting to restart after a defect.

  • #​9256 cc00906 Thanks @​Tanner-Scadden! - Add ClusterMetrics.shardReleaseDuration, a timer recording how long each completed shard release takes.

  • #​9244 09ba1f5 Thanks @​effect-bot! - Keep the cluster shards gauge accurate when shards are released or shard locks are lost.

  • #​9513 9ff1a73 Thanks @​effect-bot! - Repeat the stalled forced shard release warning every max(shardLockExpiration, 30 seconds) while the release stays pending, and add the ClusterMetrics.shardsReleasing gauge (effect_cluster_shards_releasing) counting the shards a runner is still releasing.

  • #​9443 06bc532 Thanks @​effect-bot! - Fix a Sharding startup race that could access singleton synchronization before initialization, causing a ReferenceError and delaying shutdown.

  • #​6441 97bfd84 Thanks @​sbking! - Fix SQL Server support in cluster SqlMessageStorage. Message claims and duplicate checks now use valid T-SQL. The SQL Server tables use filtered unique indexes instead of nullable UNIQUE constraints, and NVARCHAR(MAX) instead of TEXT, so keyless messages and chunked replies can be stored.

  • #​9645 25efaef Thanks @​effect-bot! - Fix ClusterWorkflowEngine losing a Workflow.interrupt sent while a run was still saving its Suspended reply.

  • #​9394 c10335b Thanks @​effect-bot! - Fix suspended cluster workflow scopes not being released when an execution completes. Earlier runs retain their resources through suspension and release them on completion or owner teardown, without running durable workflow finalizers on abandonment.

  • #​9490 a808972 Thanks @​tim-smart! - Remove regex lookbehind from ConfigProvider variable expansion to prevent module-loading syntax errors on Safari versions before 16.4, while preserving interpolation and escaping behavior.

  • #​9621 20e844c Thanks @​Marve10s! - Fix Config.schema dropping record entries for numeric key schemas such as Schema.Int or Schema.Number.

  • #​9539 b9f73f3 Thanks @​Marve10s! - Fix Cron.prev skipping an occurrence earlier in the same second as the input.

  • #​9719 5739878 Thanks @​Marve10s! - Fix DateTime.formatIsoDate and DateTime.formatIsoDateUtc dropping the day for years before 0000 or after 9999.

  • #​9654 28acdf3 Thanks @​okarin1511! - Fix DateTime.zoneFromString rejecting "GMT" and accept compact UTC offsets without colon

  • #​9582 59b6396 Thanks @​itisrmk! - Accept lowercase z and gmt zone designators in DateTime.make and DateTime.makeUnsafe. These strings previously had a second Z appended and were rejected.

  • #​9725 0bccc9c Thanks @​Marve10s! - Fix DateTime values in named time zones turning year zero and BCE dates into CE years.

  • #​9437 fed70de Thanks @​effect-bot! - Add DecisionModel.decideSettled to retain valid answers alongside per-decision Result failures (Missing, Refused, NoDistribution, or Invalid). Provider failures still fail the effect; decide remains all-or-nothing.

    OpenRouter now passes missing distributions to core validation. OpenAI reports refusals per decision and wrong-kind score answers as invalid rather than missing.

    Update hand-built services to implement decideSettled, handle optional provider probabilities and refusal answers, and use settled outcomes instead of the removed OpenAiContentPolicyMetadata and metadata.openai.refusedDecisions.

  • #​9422 82648a2 Thanks @​candrewlee14! - DecisionModel.decide now returns the response id, the modelId that answered and provider metadata. OpenRouterDecisionModel reports cost and the serving provider under metadata.openrouter.

  • #​9436 afb5f32 Thanks @​jpowersdev! - Fix Channel.decodeText and Stream.decodeText dropping incomplete trailing characters. Flush buffered bytes on normal completion, emitting U+FFFD by default or a defect with fatal: true.

  • #​9325 28813f5 Thanks @​effect-bot! - Rerun reactive queries only once per invalidation or batch flush when multiple keys match the same query, avoiding duplicate query results and atom refreshes.

  • #​9692 0fae934 Thanks @​effect-bot! - Destroy the AsyncResource a fiber captures when it yields once the fiber resumes, so tools like vitest's detectAsyncLeaks no longer report effect/Fiber leaks.

  • #​9410 f260830 Thanks @​effect-bot! - Send an initial DevTools Ping immediately so a server that only responds to client messages can complete startup without waiting for the connection timeout.

  • #​9329 19b63eb Thanks @​effect-bot! - Include disposal library types in the Effect and ManagedRuntime declarations so non-Node consumers can type-check imports without explicitly enabling ESNext.Disposable.

  • #​9258 14db221 Thanks @​devangpratap! - Fix Duration.fromInputUnsafe losing nanosecond precision for large integer tuple and object inputs.

  • #​9506 679f956 Thanks @​tim-smart! - Use Effect.fnUntraced for internal functions that returned Effect.gen.

  • #​9604 b72707c Thanks @​effect-bot! - Document how Effect.result and Effect.option handle causes that mix typed errors with interruptions or defects, and the parameter-count rule that decides whether Effect.promise, Effect.tryPromise and Effect.callback provide an AbortSignal.

  • #​9552 44c8c1d Thanks @​wmaurer! - Add an optional batchKey to EmbeddingModel.make to group concurrent embed calls by provider-relevant context. OpenAI and OpenAI-compatible providers now separate batches with different configuration overrides or client transforms. Undeclared context, such as per-call FetchHttpClient.RequestInit, still uses the first caller's value.

  • #​9148 1e7909b Thanks @​fubhy! - Add effect/encoding/Tar for streaming tar decoding and encoding. Decode v7, USTAR, PAX and non-sparse GNU archives; encode USTAR with PAX headers as needed. Entry constructors use reproducible defaults.

  • #​9420 0611a65 Thanks @​jpowersdev! - Add the experimental Xml module to effect/encoding for streaming XML 1.0 decoding and encoding over text or UTF-8 bytes. Decoding checks well-formedness, enforces size and depth limits, and never reads external resources or expands DOCTYPE entities. elements collects repeated elements, such as feed items, into trees.

  • #​9419 2fadc65 Thanks @​jpowersdev! - Add experimental effect/encoding/Zip for streaming zip encoding and decoding. Encode and decode stored and deflated entries, with ZIP64 when needed; decoding reads entries as the archive arrives and checks each body's CRC-32 and sizes. This API may receive breaking changes in patch releases.

  • #​9578 feb6ce5 Thanks @​tim-smart! - Add the always-on ClusterMetrics.entityMailboxSizeMax gauge, which reports the largest mailbox size among the resident entities of each type, read when metrics are snapshotted.

  • #​9572 5a2ed53 Thanks @​tim-smart! - Add the unstable Metric.remove, Metric.removeUnsafe and Metric.registerUnsafe APIs for removing series and registering series whose value is read on snapshot. The OTLP and OpenTelemetry exporters now drop delta state for series that are no longer registered. Add the opt-in ClusterMetrics.entityMailboxSize gauge, enabled with ShardingConfig.entityMailboxMetrics or the mailboxMetrics entity option, which reports the mailbox size of each resident entity and removes the series when the entity is released.

  • #​9721 c8d26a4 Thanks @​Marve10s! - Fix Equivalence.combineAll losing its criteria after the first comparison when given a one-shot iterable.

  • #​9482 0c8b446 Thanks @​tim-smart! - Track the source remote of each imported entry in SqlEventJournal and the IndexedDB EventJournal, instead of one row per entry per remote.

    • Storage grows with entries rather than entries times remotes. An imported entry is still relayed to other remotes and never uploaded back to its source.
    • Journals from earlier releases migrate on first open: SQL drops the remotes table and IndexedDB upgrades to version 2. SQL needs a writable connection.
    • An entry acknowledged by a remote, or known to several remotes before migrating, may be uploaded to a remote once more. The server treats it as a duplicate.
  • #​9448 05c3409 Thanks @​tim-smart! - Fix the memory and IndexedDB EventJournal advancing a remote's sequence for a batch whose callback failed, and the memory journal missing conflicts while a clock-skewed local write leaves it unordered.

  • #​9479 b04191b Thanks @​tim-smart! - Encrypted event log replication now encrypts entries in batches of up to 100 entries or about 256 KB of payload, one AES-GCM call per batch, and encrypted servers store and stream those batches. Each batch authenticates its store id and plaintext entry ids. This changes the encrypted protocol, APIs and server tables without migration: upgrade encrypted clients and servers together, and start encrypted servers on fresh storage because existing per-entry rows are not read.

Breaking changes
  • EncryptedEntry and EncryptedRemoteEntry are replaced by EncryptedBatch and EncryptedRemoteBatch, and WriteEntries.encryptedEntries becomes batches.
  • EventLogEncryption.encrypt and decrypt take the store id and work on batches, and the decodeChanges option of EventLogRemote.makeWith receives the store id.
  • EventLogServerEncrypted.Storage.write and changes use batches, PersistedEntry is removed, and SqlEventLogServerEncrypted no longer accepts insertBatchSize.

Event journals now keep the first copy of an entry that is repeated within one remote delivery, and SqlEventJournal advances an entry's remote sequence when it arrives again later, so nextRemoteSequence passes it.

  • #​9448 05c3409 Thanks @​tim-smart! - EventJournal.writeFromRemote now hands its effect the whole batch with conflicts read up front, and EventLog.HandlerTransaction runs a replayed batch's handlers in one transaction.

  • #​9445 4067e64 Thanks @​tim-smart! - Flush EventLog reactivity invalidations once per replayed remote batch instead of once per entry.

  • #​9471 e04563d Thanks @​tim-smart! - Speed up UUID formatting and memoize EventJournal.Entry.idString.

  • #​9491 02d7fc5 Thanks @​tim-smart! - Add EventLog.groupBatchCompaction for compaction across primary keys, with explicit forwarding or dropping of undecodable entries. Both compaction APIs now provide forward(entry) to preserve entries unchanged at their original batch positions. Align server compaction output ordering with client replay.

  • #​9521 561d2a1 Thanks @​tim-smart! - Generate EventLog entry ids from a hybrid logical clock, so a local write always sorts after every entry committed to its journal, even when the local clock is behind.

    • The memory, IndexedDB and SQL journals generate each local id after the latest id in their store, without adopting it into the process's id sequence. The IndexedDB and SQL journals read it from the store, because other tabs or processes sharing the store keep their own sequence. This adds one read per writeMany. Inside an enclosing SQL transaction, local ids also sort after its uncommitted rows, and a rollback leaves nothing behind.
    • Clocks that run ahead are not clamped. A warning is logged when an imported id is more than 24 hours ahead of the local clock, read from the Clock service.
    • If a store holds an id at the end of the UUID v7 timestamp range, local writes to that store fail with an EventJournalError instead of committing ids that sort before it. makeEntryIdUnsafe throws a RangeError once its own sequence passes the range. Ids created with an explicit msecs still clamp.
  • #​9520 8fe2dcc Thanks @​tim-smart! - Order EventLog conflicts by entry id in every journal and the unencrypted server, so replicas converge. A conflict is now a stored entry for the same event and primary key with a strictly greater id, remote batches replay in id order after compaction, and compaction replacements are ordered and conflict-checked by the source entry they are anchored to.

  • #​9507 a8086fa Thanks @​tim-smart! - Fix event log server compaction failing with an argument-limit error on large groups, and stop scanning the whole in-memory journal on replay.

  • #​9444 88a33b4 Thanks @​tim-smart! - Decode EventJournal entry timestamps without allocating, and merge remote imports into the in-memory journal instead of re-sorting it on every batch.

  • #​9508 e77372a Thanks @​tim-smart! - Send chunked event-log remote writes with up to four parts in flight instead of one at a time.

  • #​9480 3dd4388 Thanks @​tim-smart! - Reduce per-entry overhead in EventLog remote replay by caching payload decoders per handler and merging handler contexts once per batch.

  • #​9523 ba2b00c Thanks @​tim-smart! - Add the unstable effect/eventlog/EventRow module for convergent row updates with set, patch and remove events. It supports single-field, composite and derived keys, per-field conflict resolution through typed storage callbacks, and compaction that drops superseded entries. The constructors return { event, payload }, which spreads into EventLog.write and works as a writeMany item or client argument.

    Breaking: the function returned by EventLog.makeClient now takes one { event, payload } object instead of positional event and payload arguments.

  • #​9224 a049d4a Thanks @​effect-bot! - Allow event-log authentication to retry failed session-auth binding lookups after storage recovers, while continuing to cache successful lookups.

  • #​9478 84aeede Thanks @​tim-smart! - Skip decrypting remote changes the local event journal already stores, and pass entry bytes to WebCrypto without copying them. EventJournal gains a required entriesById method, which custom journal implementations must add.

  • #​9526 43e5e19 Thanks @​tim-smart! - Fail and retry an EventLog remote replay batch when an entry fails to decode or its handler fails, instead of committing the entry without applying it.

  • #​9473 77bbf16 Thanks @​tim-smart! - Speed up decoding of eventlog entries and unencrypted write frames by building instances from already validated fields. The wire format is unchanged.

  • #​9477 6af3a47 Thanks @​tim-smart! - Acknowledge event log writes instead of echoing them to the writing connection. Breaking protocol change: upgrade clients and servers together; mixed versions are unsupported.

    Custom implementations must add EventJournal.writeRemoteAcks, add encrypted Storage.entrySequences (the sequence each entry was first stored at, used to acknowledge skipped batches), and return RemoteEntry values from unencrypted Storage.entriesAfter. Set firstSequence when sequences start above 0. Custom remotes can still return void from write to confirm uploads through the change stream.

    SqlEventLogServerEncrypted adds a sequence column to its entry id tables, so encrypted servers still need fresh storage.

  • #​9452 aac8d21 Thanks @​tim-smart! - Add EventLog.writeMany and EventJournal.writeMany, which write a batch of local events under one lock, one handler transaction and one journal commit. Clock-based entry ids are now strictly ascending within a process.

  • #​9690 84c8dc4 Thanks @​effect-bot! - Document that HttpClient.followRedirects needs FetchHttpClient.RequestInit with { redirect: "manual" } when used with FetchHttpClient.

  • #​9603 78d1988 Thanks @​effect-bot! - Wait for replaced FiberMap and FiberHandle fibers to finish their interruption cleanup before the owning scope finishes closing.

  • #​9729 5676a2a Thanks @​Marve10s! - Fix Fiber.runIn and Effect.forkIn hanging when the attached fiber closes its own scope.

  • #​9433 4b437bf Thanks @​effect-bot! - Give defects precedence when the runtime combines a typed failure with a defect, so typed-error recovery can no longer swallow a crashing finalizer or a dying concurrent sibling.

  • #​9290 1af11fd Thanks @​effect-bot! - Fix AtomHttpApi query response mode inference so literal and union response modes are accepted and produce the corresponding success types.

  • #​9524 716f8df Thanks @​tim-smart! - Fix Atom.Serializable encode and decode types to use Schema.Json, matching the JSON codec used at runtime.

  • #​9404 ee27718 Thanks @​effect-bot! - Fix SchemaGetter.BigInt to return SchemaIssue.InvalidValue for inputs that cannot be converted to a bigint. This also makes SchemaTransformation.bigintFromString and Snowflake.SnowflakeFromString reject invalid strings with typed schema errors instead of defects.

  • #​9411 4d86d1b Thanks @​effect-bot! - Start Stream.callback and Channel.callback registration before the first pull, so synchronous listener setup no longer misses early events. Browser HTTP response stream listeners now stay installed until the stream is finalized.

  • #​9323 5462ed7 Thanks @​effect-bot! - Fix Cause runtime JSON and inspection output to use reasons instead of failures, including within failed Exits. Schema validation error paths now also use reasons; Cause and Exit schema encodings are unchanged.

  • #​9400 658837c Thanks @​effect-bot! - Preserve input order in concurrent Effect.filter results and record Effect.all keys, including mode: "result".

  • #​9226 00261cc Thanks @​effect-bot! - Reconnect the DevTools client after startup connection failures or dropped connections, and log connection failures at Debug level. Stop failed or pending connections on shutdown while preserving queued telemetry flushing for healthy connections.

  • #​9261 7cccb93 Thanks @​effect-bot! - Preserve nanosecond precision when parsing large decimal Duration strings in units from milliseconds through weeks, and avoid intermediate overflow when converting large finite durations to numeric units.

  • #​9403 7c98228 Thanks @​effect-bot! - Fix Effect.effectify discarding synchronous throws after a synchronous callback. These throws now become defects by default, or typed failures when onSyncError is provided.

  • #​9469 5a8e248 Thanks @​tim-smart! - Fix encrypted SQL event-log storage to return and publish only newly inserted entries, avoiding duplicate broadcasts when clients re-upload a batch.

  • #​9227 8037a65 Thanks @​effect-bot! - Preserve undecodable event payloads unchanged during group compaction so they do not stall replication or prevent valid events from being compacted.

  • #​9393 25912db Thanks @​effect-bot! - Preserve remote replay order for unaffected events when compaction is enabled, and replay replacements in compactor write order at their source position.

  • #​9457 7f32606 Thanks @​tim-smart! - Fix IndexedDB event journal uploads resending entries the remote has not echoed back. Upload progress is now checkpointed by insertion order, so entries imported later with older ids are still forwarded. Existing databases upgrade automatically; entries the remote has not confirmed may be uploaded once more after the upgrade.

  • #​9239 0386f88 Thanks @​effect-bot! - Prevent WorkflowEngine.layerMemory from running duplicate compensations after workflow replays. Each replay now starts with a fresh workflow scope, as with the cluster engine, so only the final run's compensations run.

    Finalizers registered in runs that suspended still run once the execution finishes, in the same order, but they now observe Exit.void instead of the execution's final exit.

  • #​9237 403298a Thanks @​effect-bot! - Align safe interruption in WorkflowEngine.layerMemory with the cluster engine: workflows that finish without suspending now complete normally instead of being interrupted and running compensation. Preserve unsafe interruption across suspended replays.

  • #​9203 5a3ebc0 Thanks @​effect-bot! - Allow absolute HTTP URLs in opaque-origin documents, such as sandboxed srcdoc iframes, by ignoring an invalid inferred base URL. Preserve relative URL resolution when the document provides a valid base.

  • #​9390 fac2191 Thanks @​effect-bot! - Fix rate limiter delay mode to charge oversized token requests against the shared store, preserving queue ordering and delay/reset timing for fixed-window and token-bucket limits.

  • #​9600 fdb12dc Thanks @​effect-bot! - Fix RequestResolver.persisted to persist only refresh results when using staleWhileRevalidate. Whole-batch refresh failures now replace stale values, while refreshes that complete no entries leave the original expiry unchanged.

  • #​9519 97909b8 Thanks @​tim-smart! - Fix dependency tracking for hydrated plain serializable atoms. They now build on first read or mount like wrapped atoms, so hydrated effect and stream atoms run on mount after SSR instead of skipping that initial run.

  • #​9241 c3983f4 Thanks @​effect-bot! - Preserve fractional token counts in the Redis fixed-window rate limiter so remaining capacity, excess-request rejection, and delay reservations are calculated correctly.

  • #​9568 3a5e65e Thanks @​tim-smart! - Run each RequestResolver.fromEffect entry with its own caller context, without inheriting another caller's services.

  • #​9386 8b40fbc Thanks @​effect-bot! - Fix Resource.auto to wait for the first scheduled run before refreshing, avoiding an extra acquisition immediately after construction.

  • #​9379 3f3e119 Thanks @​boozedog! - Fix TestSchema round-trip assertions to use schema equivalence, avoiding false failures for object prototypes and signed zeros.

  • #​9317 7c7b8ed Thanks @​effect-bot! - Fix hooks and parse options being ignored or reused across calls to Schema.toStandardSchemaV1. Both Schema.toStandardSchemaV1 and Schema.toStandardJSONSchemaV1 now return fresh shallow copies and compose in either order. Access statics that use this.#field through the original class.

  • #​9383 d4f71bc Thanks @​effect-bot! - Fix unordered Stream.mapEffect, Stream.flattenEffect, and Stream.bindEffect dropping in-flight results when concurrency is Infinity or an oversized positive number. These concurrency values now use the same safe bound as "unbounded", so successful completion waits for pending effects.

  • #​9397 c66241e Thanks @​effect-bot! - Invalidate atom Stream mutation reactivity keys only after successful completion, rather than on failure, defects, interruption, or replacement by a newer write.

  • #​9225 f0e941e Thanks @​effect-bot! - Fix unencrypted event-log replication to acknowledge already committed entries without re-running their handlers, even when storage order differs from timestamp order or entries share a timestamp. Exclude older entries from handler conflicts regardless of storage order.

  • #​9466 5f8a6e5 Thanks [@​effect-bot](https://redirect.github.com/eff

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot enabled auto-merge (squash) October 29, 2026 18:19
@GraemeF

GraemeF commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Held. effect, @effect/platform-node and @effect/platform-node-shared move together, as #461 did for 4.0.5, because each platform package at 4.0.6 declares effect ^4.0.6 as a peer. That change supersedes this bump, and #531 is held for the same reason. CI is also red here because the plugin modules' fixed-output hash in flake.nix did not move with the lock. Once the change moving all three lands, this pull request is closed with a link to it.

@renovate
renovate Bot force-pushed the renovate/effect-4.x branch from faaa171 to 98bf2b9 Compare October 29, 2026 22:48
GraemeF added a commit that referenced this pull request Oct 30, 2026
…535)

@effect/platform-node 4.0.6 and @effect/platform-node-shared 4.0.6
declare effect ^4.0.6 as a peer, so Renovate's three separate bumps
(#531, #533, #534) cannot land one at a time. This moves all three pins,
the plugin lock and pluginModules' hash in one change.

The lock moves only the three effect packages, and the undici it already
holds meets platform-node's new range. The 4.0.6 notes are fixes and
additions. FileSystem.lstat is new, and a custom FileSystem must now
provide it, but the plugin uses only NodeFileSystem. EPERM now reads as
PermissionDenied rather than Unknown, and the plugin matches on neither.
Imports of effect's nested internal modules are now blocked, and the
plugin imports only public entry points. The rest touches HTTP servers,
clusters, event logs and the CLI, none of which the plugin uses.
@GraemeF

GraemeF commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

Superseded by #535, which moved effect, @effect/platform-node and @effect/platform-node-shared to 4.0.6 together, with the plugin lock and pluginModules' hash. It merged as fbc60cd with CI green on main.

@GraemeF GraemeF closed this Oct 30, 2026
auto-merge was automatically disabled October 30, 2026 00:55

Pull request was closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant